/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sapra.abc;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.sapra.core.DBManager;
import org.sapra.dao.Aseguradora;
import org.sapra.dao.Banco;
import org.sapra.dao.Empresa;
import org.sapra.dao.Esquemapagopracticante;
import org.sapra.dao.GpoEmpresas;
import org.sapra.dep.conexion.DAC;

/**
 *
 * @author ppratsc
 */
public class dEmpresa extends DAC{
    static List<Empresa> getEmpresas(int fkgpo) {
        List<Empresa> resp = null;

        String sql = "SELECT ";
        sql += "e.empresaId,e.razon_empresa";
        sql += ",co.fk_grupoCorporativoId";
        sql += " FROM ";
        sql += "empresa e,";
        sql += "corporativo co,";
        sql += "grupocorporativo g";
        sql += " WHERE ";
        sql += "e.fk_corporativoId = co.corporativoId";
        sql += " AND co.fk_grupoCorporativoId = g.grupoCorporativoId";
        sql += " ORDER BY e.razon_empresa"; // Ordena Alfabeticamente

        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Empresa.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }

    static List<Esquemapagopracticante> getEsquemaPago() {
        List<Esquemapagopracticante> resp = null;

        String sql = "SELECT esquemaPagoPracticanteId,nombre FROM esquemapagopracticante  "; // Ordena Alfabeticamente

        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Esquemapagopracticante.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }
    public static Empresa SelEmp(int id){
        String sql="";
        List<Empresa> resp = null;
        Empresa em=null;
         try {
             sql="SELECT * FROM empresa WHERE empresaId="+id;
            resp = DBManager.getQuery(Empresa.class,sql);
            if(resp.size()>0){
                em=new Empresa();
                em=(Empresa)resp.get(0);
            }
        } catch (Exception ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
        return em;
    }

    static List<Banco> getBancos() {
        List<Banco> resp = null;

        String sql = "SELECT * FROM banco";

        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Banco.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }
        
        return resp;
    }
    static List<Aseguradora> getAseguradora(){
            List<Aseguradora> resp = null;
            String sql = "SELECT aseguradoraId,nombre FROM aseguradora";
            try {
                // Busca las Empresas del Usuario
                resp = DBManager.getQuery(Aseguradora.class,sql);
            } catch (Exception ex) {
                Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
                return resp;
            }

            return resp;
    }
    static List<GpoEmpresas> getGpoEmpresas() {
        List<GpoEmpresas> resp = null;

        String sql = "SELECT ";
        sql += "g.nombre as nombreCorporativo";
        sql += ",co.*";
        sql += " FROM ";
        sql += "corporativo co,";
        sql += "grupocorporativo g";
        sql += " WHERE ";
        sql += " co.fk_grupoCorporativoId = g.grupoCorporativoId";
        sql += " ORDER BY g.nombre"; // Ordena Alfabeticamente

        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(GpoEmpresas.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }

    static int Save(Empresa emp) {
        int resp = -1;
        String sql;
        if(emp.getEmpresaId() <= 0){
            
            sql = "INSERT INTO empresa(num_cliente,rfc,razon_empresa,";
            sql += "razon_factura,practicantes_seguro,porcentaje_comision,ahorro_acumulado,";
            sql += "fk_bancoId,fk_direccionId,fk_corporativoId,";
            sql += "fk_esquemaPagoPracticanteId,fechaTerminoAbierta,tieneEsquemaAhorro,";
            sql += "fechaSuspension,suspendida,numeroSocio,seguroAbierto,notificacionesPracticantes,";
            sql += "tieneAcceso) ";

            // Valores
            sql += " VALUES(";
            sql += "'"+emp.getNumeroSocio()+"',";
            sql += "'"+emp.getRfc()+"',";
            sql += "'"+emp.getRazon_empresa()+"',";
            sql += "'"+emp.getRazon_factura()+"',";
            sql += emp.getPracticantes_seguro() + ",";
            sql += emp.getPorcentaje_comision() + ",";
            sql += "0,"; // Deprecated: Ahorro Acomulado
            sql += emp.getFk_bancoId() + ",";
            sql += emp.getFk_direccionId() + ",";
            sql += emp.getFk_corporativoId() + ",";
            sql += emp.getFk_esquemaPagoPracticanteId()+","; // Deprecated: Esquema de Pago Practicante
            sql += emp.getFechaTerminoAbierta() + ",";
            sql += "FALSE,";
            sql += "NULL,";
            sql += emp.getSuspendida() + ",";
            sql += "'" + emp.getNumeroSocio() + "',";
            sql += emp.getSeguroAbierto() + ",";
            sql += emp.getNotificacionesPracticantes() + ",";
            sql += "TRUE)";
            try {
                resp = DBManager.insert(sql);
            } catch (Exception ex) {
                //Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
                resp = -1;
            }


        }else {
            // UPDATE DE DATOS EMPRESA
            sql = "UPDATE empresa ";
            sql += "SET num_cliente =" + "'" + emp.getNumeroSocio() + "'";
            sql += ",rfc =" + "'" + emp.getRfc() + "'";
            sql += ",razon_empresa =" + "'" + emp.getRazon_empresa() + "'";
            sql += ",razon_factura =" + "'" + emp.getRazon_factura() + "'";
            sql += ",practicantes_seguro =" + emp.getPracticantes_seguro();
            sql += ",porcentaje_comision =" + emp.getPorcentaje_comision();
            sql += ",ahorro_acumulado =" + "0";
            sql += ",fk_bancoId=" + emp.getFk_bancoId();
            sql += ",fk_direccionId =" + emp.getFk_direccionId();
            sql += ",fk_corporativoId = " + emp.getFk_corporativoId();
            sql += ",fk_esquemaPagoPracticanteId =" +emp.getFk_esquemaPagoPracticanteId();
            sql += ",fechaTerminoAbierta = " + emp.getFechaTerminoAbierta();
            sql += ",tieneEsquemaAhorro = " + emp.getTieneEsquemaAhorro();
            sql += ",fechaSuspension =" + emp.getFechaSuspension();
            sql += ",suspendida =" + emp.getSuspendida();
            sql += ",numeroSocio =" + "'" + emp.getNumeroSocio() + "'";
            sql += ",seguroAbierto =" + emp.getSeguroAbierto();
            sql += ",notificacionesPracticantes =" + emp.getNotificacionesPracticantes();
            sql += ",tieneAcceso =" + emp.getTieneAcceso();
            sql += " WHERE empresaid = " + emp.getEmpresaId();
            try {
                DBManager.Update(sql);
                resp = emp.getEmpresaId();
            } catch (SQLException ex) {
                Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
                resp = -1;
            }

        }


        return resp;
    }
    static List<Aseguradora> ListAseguradoraEmpresa(Empresa emp) {
        List<Aseguradora> ae=null;
            String sql = "SELECT a.aseguradoraId,a.nombre,a.archivoPoliza,a.consecutivo "
                    + " FROM aseguradoraempresa ae "
                    + " INNER JOIN aseguradora a"
                    + " ON ae.fk_aseguradoraId=a.aseguradoraId"
                    + " WHERE fk_empresaId="+emp.getEmpresaId();
            try {
                ae = DBManager.getQuery(Aseguradora.class,sql);
            } catch (Exception ex) {
                Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
                return null;
            }

            return ae;
    }
     public static int updateAsegEmpresa(int empresaId,int aseguradoraId){
        String sql="";
        try {
             sql = "UPDATE aseguradoraempresa SET fk_aseguradoraId="+aseguradoraId+" WHERE fk_empresaId="+empresaId;
            try {
                DBManager.Update(sql);
            } catch (SQLException ex) {
                Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
                return -1;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }

        return 1;
    }

}
